Authorization পলিসি এবং কাস্টম রোলস

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core) ASP.NET Core Authentication এবং Authorization |
222
222

ASP.NET Core-এ Authorization হলো নিরাপত্তা নিশ্চিত করার একটি গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশনে অ্যাক্সেস নিয়ন্ত্রণ করতে সহায়তা করে। Authorization পলিসি এবং কাস্টম রোলস ব্যবহার করে আপনি নির্দিষ্ট ব্যবহারকারীদের জন্য নির্দিষ্ট অ্যাক্সেস কন্ট্রোল তৈরি করতে পারেন। এখানে আমরা Authorization পলিসি এবং কাস্টম রোলস সম্পর্কে বিস্তারিত আলোচনা করব।


Authorization পলিসি

Authorization পলিসি ASP.NET Core-এ একটি উচ্চতর কৌশল যা রোল, ক্লেইম বা কাস্টম শর্তাবলী অনুযায়ী ব্যবহারকারীর অ্যাক্সেস অনুমতি বা অস্বীকার করতে ব্যবহৃত হয়। পলিসি এক বা একাধিক শর্তাবলী দিয়ে গঠিত হতে পারে, এবং এটি অনুমোদন সিদ্ধান্ত নেয়ার সময় ব্যবহার হয়।

পলিসি তৈরি করা

  1. ConfigureServices মেথডে পলিসি তৈরি করা: পলিসি তৈরির জন্য প্রথমে AddAuthorization মেথড ব্যবহার করে services কনফিগারেশন ফাইলে পলিসি রেজিস্টার করতে হবে। এখানে আমরা একটি সাধারণ কাস্টম পলিসি তৈরি করব যা রোল ভিত্তিক।

    উদাহরণ:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthorization(options =>
        {
            options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
            options.AddPolicy("ManagerOnly", policy => policy.RequireRole("Manager"));
        });
    
        services.AddControllersWithViews();
    }
    

    এখানে, AdminOnly পলিসিটি নিশ্চিত করবে যে শুধুমাত্র Admin রোলধারী ব্যবহারকারীরা অ্যাক্সেস করতে পারবে।

পলিসি প্রয়োগ করা

পলিসি প্রয়োগ করতে আপনি [Authorize] অ্যাট্রিবিউট ব্যবহার করবেন এবং পলিসির নাম উল্লেখ করবেন।

Controller Action-এ পলিসি প্রয়োগ করা:

[Authorize(Policy = "AdminOnly")]
public IActionResult AdminDashboard()
{
    return View();
}

এখানে, AdminOnly পলিসি শুধুমাত্র Admin রোলধারী ব্যবহারকারীদের AdminDashboard অ্যাক্সেস করতে দেবে।

পলিসি চেক করা

আপনি IAuthorizationService ব্যবহার করে কোডের মধ্যে পলিসি চেক করতে পারেন, যাতে রUNTIME-এ পলিসি যাচাই করা যায়।

public class MyController : Controller
{
    private readonly IAuthorizationService _authorizationService;

    public MyController(IAuthorizationService authorizationService)
    {
        _authorizationService = authorizationService;
    }

    public async Task<IActionResult> SomeAction()
    {
        var result = await _authorizationService.AuthorizeAsync(User, null, "AdminOnly");
        if (result.Succeeded)
        {
            // অ্যাক্সেস অনুমোদিত
            return View();
        }
        else
        {
            // অ্যাক্সেস অস্বীকৃত
            return Forbid();
        }
    }
}

কাস্টম রোলস

ASP.NET Core-এ Roles ব্যবহার করা হয় ব্যবহারকারীদের বিশেষ ভূমিকা (role) নির্ধারণের জন্য, যাতে নির্দিষ্ট রোলধারী ব্যবহারকারীরা নির্দিষ্ট অ্যাক্সেস পেতে পারেন। কাস্টম রোলস তৈরি এবং ব্যবহার করার জন্য আপনাকে কিছু কনফিগারেশন করতে হবে।

কাস্টম রোলস তৈরি করা

  1. Identity সিস্টেম ব্যবহার করলে, আপনি RoleManager ব্যবহার করে কাস্টম রোল তৈরি করতে পারেন।
  2. ConfigureServices মেথডে Identity সিস্টেম কনফিগার করতে হবে:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
    
        services.AddAuthorization(options =>
        {
            options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
        });
    
        services.AddControllersWithViews();
    }
    

কাস্টম রোল তৈরি ও অ্যাসাইন করা

  1. RoleManager ব্যবহার করে কাস্টম রোল তৈরি করা:

    public class RoleInitializer
    {
        public static void Initialize(IServiceProvider serviceProvider, UserManager<ApplicationUser> userManager)
        {
            var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
    
            string[] roleNames = { "Admin", "Manager", "User" };
            foreach (var roleName in roleNames)
            {
                var roleExist = roleManager.RoleExistsAsync(roleName).Result;
                if (!roleExist)
                {
                    var role = new IdentityRole(roleName);
                    var roleResult = roleManager.CreateAsync(role).Result;
                }
            }
        }
    }
    

    এখানে, আপনি "Admin", "Manager", "User" নামে কাস্টম রোল তৈরি করছেন।

  2. রোল অ্যাসাইন করা: ব্যবহারকারীর জন্য রোল অ্যাসাইন করার জন্য UserManager ব্যবহার করা হয়।

    public async Task<IActionResult> AssignRoleToUser(string userId)
    {
        var user = await _userManager.FindByIdAsync(userId);
        if (user != null)
        {
            var result = await _userManager.AddToRoleAsync(user, "Admin");
            if (result.Succeeded)
            {
                return RedirectToAction("Index");
            }
        }
        return View("Error");
    }
    

কাস্টম রোল এবং পলিসি একসাথে ব্যবহার

ASP.NET Core-এ কাস্টম রোলস এবং পলিসি একসাথে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আপনি একটি পলিসি তৈরি করতে পারেন যা Admin রোল এবং একটি নির্দিষ্ট ক্লেইম প্রয়োজন।

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("AdminWithSpecialClaim", policy =>
            policy.RequireRole("Admin").RequireClaim("SpecialClaim", "true"));
    });
}

এখানে, পলিসি Admin রোলধারী ব্যবহারকারী এবং একটি নির্দিষ্ট ক্লেইম চেক করবে। যদি ব্যবহারকারীর কাছে SpecialClaim ক্লেইম না থাকে, তবে অ্যাক্সেস অস্বীকার করা হবে।


সারাংশ

ASP.NET Core-এ Authorization পলিসি এবং কাস্টম রোলস ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটিকে আরও নিরাপদ এবং নমনীয় করতে পারেন। পলিসির মাধ্যমে আপনি একটি শক্তিশালী নিরাপত্তা মডেল তৈরি করতে পারেন, যেখানে ব্যবহারকারীদের রোল, ক্লেইম বা অন্যান্য শর্তাবলী অনুসারে অ্যাক্সেস নিয়ন্ত্রণ করা হয়। কাস্টম রোলস ব্যবহার করে আপনি অ্যাপ্লিকেশনে ব্যবহারকারীদের জন্য নির্দিষ্ট ভূমিকা নির্ধারণ করতে পারেন, যা নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল ব্যবস্থাকে আরও উন্নত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion